/*oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO*/
/*
This File was written as part of HW assignment 4 in the course "Introduction
To Systems Programming" at Tel-Aviv University's School of Electrical 
Engineering, Winter 2012, by Amnon Drory. 
*/ 
/*oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO*/

#ifndef __HW4_RANDOM_NUMBERS_H
#define __HW4_RANDOM_NUMBERS_H

/*oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO*/

#include <stdlib.h>

/*oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO*/

/**
 * InitializeRandomNumberGenerator() Initializes the random number generator.
 * It should be called once in the lifetime of the program, before using any of
 * the "Random*" functions.
 * This version uses a seed value to initialize the random number generator. 
 * If you run the program twice with the same seed, then the sequence of random
 * numbers returned by the Random* functions will be the same in both runs.
 */ 
void InitializeRandomNumberGenerator( unsigned int seed );

/**
 * InitializeRandomNumberGeneratorWithoutSeed() is similar to 
 * InitializeRandomNumberGenerator(), except that no seed is supplied.
 * The random number generator is initialized using the current time as a seed.
 * This means that if you run the same program twice, you will get different
 * random numbers in each run.
 */
void InitializeRandomNumberGeneratorWithoutSeed();

/**
 * RandomUniform() returns a random number drawn from an approximate 
 * uniform probability in the range [0,1].
 */ 
double RandomUniform();

/**
 * RandomGaussian() returns a random number drawn from an
 * approximate Normal (Gaussian) probability with mean of 0 
 * and variance of 1.
 */
double RandomGaussian();

/**
 * RandomInteger() returns a random integer selected with approximate equal 
 * probability from the range [ Min, Max ]
 */
int RandomInteger( int Min, int Max );

/*oOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO*/

#endif // __HW4_RANDOM_NUMBERS_H